// type 请求方式 (get|post)
// url 请求地址
// data 请求数据  (string|object)
// async 是否异步(默认 true)
// dataType  数据类型 (text(默认)|html|json)
// success   成功时的回调函数 (请求成功时执行)  function success(result){ } result 形参 => 表示接口返回的数据
function ajax(options) { //   {url,data,async,dataType,success}
    var { type = "get", url, data, async = true, dataType = "text", success } = options;

    // 根据id找到数据
    var xhr = new XMLHttpRequest();

    // instanceof   判断某个数据 是否是 由某个构造函数 创建的
    if (data instanceof Object) {  //如果data时一个对象  => 拼接形成字符串
        var str = "";
        for (var key in data) {
            // console.log(key, data[key]);
            // console.log(key + "=" + data[key]);
            str += key + "=" + data[key] + "&";
        }
        data = str.substring(0, str.length - 1)
        // console.log(str);
    }

    if (type == "get") {
        // get
        xhr.open("get", url + "?" + data, async);
        xhr.send();
    } else if (type == "post") {
        // post
        xhr.open("post", url, async);
        xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhr.send(data);
    }


    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4 && xhr.status == 200) {
            // 接口返回的数据 text(默认)/html/json
            var result = xhr.responseText;
            if (dataType == "json") {
                result = JSON.parse(result);
            }
            // console.log(result); // 获取数据

            // 不同的接口返回的数据不一样,每个用户向执行的内容也不一样
            // searchGradeById.php  =>渲染到表单
            // deleteGradeById.php  =>删除成功|失败
            // isExistUser.php      => 用户是否存在

            // var fn = function (a) {   // 写死的 => 怎么变灵活(提形参)
            //     console.log("请求成功:", a);
            // }
            if (success) {
                success(result); // 实参  => 接口返回的数据
            }

        }
    }
}
